package com.yl.drug_management.controller;

import com.alibaba.fastjson.JSONObject;
import com.yl.drug_management.pojo.Task;
import com.yl.drug_management.service.impl.DynamicTaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/dynamicTask")
public class DynamicTaskController {

    @Autowired
    private DynamicTaskService dynamicTask;

    /**
     * 查看已开启但还未执行的动态任务
     * @return
     */
    @GetMapping
    public List<Task> getStartingDynamicTask(){
        System.out.println(dynamicTask.taskMap);
        List<Task> list = new ArrayList<>();
        dynamicTask.getTaskList().forEach(s -> list.add(dynamicTask.taskRecord.get(s)));
        return list;
    }

    @GetMapping("/task")
    public Map<String, Task> getTask() {
        return dynamicTask.taskRecord;
    }

    /**
     * 开启一个动态任务
     * @param task
     * @return
     */
    @PostMapping("/dynamic")
    public String startDynamicTask(@RequestBody Task task){
        // 将这个添加到动态定时任务中去
        dynamicTask.add(task);
        return "动态任务:"+task.getName()+" 已开启";
    }

    /**
     *  根据名称 停止一个动态任务
     * @param name
     * @return
     */
    @DeleteMapping("/{name}")
    public String stopDynamicTask(@PathVariable("name") String name){
        // 将这个添加到动态定时任务中去
        if(!dynamicTask.stop(name)){
            return "停止失败,任务已在进行中.";
        }
        return "任务已停止";
    }

}
